package com.ivi.car.module.home.model;


import com.ivi.car.base.IBaseView;
import com.ivi.car.bean.home.CarMaintainInfoBean;
import com.ivi.car.bean.home.CarStatusInfoBean;
import com.ivi.car.bean.home.HomeAdvBean;

import java.util.List;

import io.reactivex.Observable;

/**
 * Copyright
 * author zhengcheng
 * date 2018/3/7
 * describe home首页接口定义的合约类
 * history
 */

public interface IHomeContract {

  /**
   * home页view接口定义
   */
  interface View extends IBaseView {
    /**
     * 展示车辆状态信息
     * 
     * @param carStatusInfo 车辆信息bean
     */
    void showCarStatusInfo(CarStatusInfoBean carStatusInfo);

    /**
     * 展示车辆维修保养种类
     * 
     * @param list 车辆维修保养集合
     */
    void showMaintainInfo(List<CarMaintainInfoBean> list);

    /**
     * 展示首页广告列表
     * 
     * @param list 广告列表集合
     */
    void showHomeAdv(List<HomeAdvBean> list);
  }

  /**
   * home页presenter定义
   */
  interface Presenter {
    /**
     * 车辆状态信息获取相关业务处理
     */
    void loadCarStatusInfo();

    /**
     * 车辆维修保养种类信息获取后的业务处理
     */
    void loadMaintainInfo();

    /**
     * 首页广告列表信息获取后的业务处理
     */
    void loadHomeAdv();
  }

  /**
   * home页model接口定义
   */
  interface Model {
    /**
     * 车辆状态信息数据获取
     * 
     * @return 车辆状态信息Observable对象
     */
    Observable<CarStatusInfoBean> loadCarStatusInfo();

    /**
     * 车辆维修保养种类数据获取
     * 
     * @return 车辆维修保养种类Observable对象
     */
    Observable<List<CarMaintainInfoBean>> loadMaintainInfo();

    /**
     * 首页广告列表信息获取
     * 
     * @return 首页广告列表Observable对象
     */
    Observable<List<HomeAdvBean>> loadHomeAdv();
  }
}
